মেথড ওভাররাইডিং এবং virtual কীওয়ার্ড

Microsoft Technologies - সি শার্প (C#) - ইনহেরিটেন্স এবং পলিমরফিজম | NCTB BOOK

মেথড ওভাররাইডিং (Method Overriding) সি শার্প (C#) এ একটি প্রক্রিয়া, যা ইনহেরিটেন্সের ক্ষেত্রে ব্যবহার করা হয়। মেথড ওভাররাইডিংয়ের মাধ্যমে বেস ক্লাসের একটি মেথডকে ডেরাইভড ক্লাসে পুনরায় সংজ্ঞায়িত করা যায়। এটি তখনই সম্ভব হয় যখন বেস ক্লাসের মেথডটিকে virtual হিসেবে চিহ্নিত করা হয় এবং ডেরাইভড ক্লাসে সেই মেথডটিকে override কীওয়ার্ড দিয়ে ওভাররাইড করা হয়।

virtual কীওয়ার্ড

  • virtual কীওয়ার্ড ব্যবহার করে বেস ক্লাসের একটি মেথডকে ওভাররাইডযোগ্য হিসেবে চিহ্নিত করা হয়।
  • virtual মেথড ডেরাইভড ক্লাসে ওভাররাইড করার জন্য প্রস্তুত থাকে, অর্থাৎ ডেরাইভড ক্লাস ঐ মেথডটিকে তার নিজস্ব পদ্ধতিতে ইমপ্লিমেন্ট করতে পারে।

override কীওয়ার্ড

  • override কীওয়ার্ড ব্যবহার করে ডেরাইভড ক্লাসে বেস ক্লাসের virtual মেথডকে পুনরায় সংজ্ঞায়িত করা হয়।
  • এটি মূলত ডেরাইভড ক্লাসে আলাদা বা বিশেষ কিছু কার্য সম্পাদন করার জন্য মেথডকে নতুনভাবে ইমপ্লিমেন্ট করতে ব্যবহৃত হয়।

মেথড ওভাররাইডিং এর উদাহরণ

নিচে একটি উদাহরণ দেওয়া হলো, যেখানে Animal নামের একটি বেস ক্লাস এবং Dog নামের একটি ডেরাইভড ক্লাস তৈরি করা হয়েছে। Animal ক্লাসের Sound মেথডটি virtual হিসেবে চিহ্নিত করা হয়েছে এবং Dog ক্লাসে Sound মেথডটি ওভাররাইড করা হয়েছে।

using System;

// বেস ক্লাস
class Animal
{
    public virtual void Sound()
    {
        Console.WriteLine("Animals make sound");
    }
}

// ডেরাইভড ক্লাস
class Dog : Animal
{
    public override void Sound()
    {
        Console.WriteLine("Dogs bark");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Animal myAnimal = new Animal();
        myAnimal.Sound(); // Output: Animals make sound

        Dog myDog = new Dog();
        myDog.Sound(); // Output: Dogs bark

        // পলিমরফিজমের মাধ্যমে
        Animal animalDog = new Dog();
        animalDog.Sound(); // Output: Dogs bark (ওভাররাইডেড মেথড কল হবে)
    }
}

আউটপুট

Animals make sound
Dogs bark
Dogs bark

এখানে, Animal ক্লাসের Sound মেথডটি virtual হিসেবে ঘোষণা করা হয়েছে এবং Dog ক্লাসে Sound মেথডটিকে override করা হয়েছে। ফলে Animal টাইপের অবজেক্ট Dog ইনস্ট্যান্স হিসেবে ব্যবহার করলেও Dog এর ওভাররাইড করা মেথডটি কল হবে।

মেথড ওভাররাইডিং এর সুবিধা

  1. পলিমরফিজম (Polymorphism): মেথড ওভাররাইডিং পলিমরফিজমে সাহায্য করে, যার মাধ্যমে একই মেথড বেস এবং ডেরাইভড ক্লাসে আলাদা আচরণ করতে পারে।
  2. কোডের মডুলারাইজেশন: বেস ক্লাসে সাধারণ কাজগুলো রাখা যায় এবং ডেরাইভড ক্লাসে নির্দিষ্ট কাজ বা বৈশিষ্ট্য সংযুক্ত করা যায়।
  3. রক্ষণাবেক্ষণ সহজ: যদি কোনো পরিবর্তন দরকার হয়, তাহলে বেস ক্লাসে সাধারণ কার্যটি থেকে যায় এবং ডেরাইভড ক্লাসে ওভাররাইড করে নতুন কার্য সংযুক্ত করা যায়।

উদাহরণ: পলিমরফিজম এবং ওভাররাইডিং

নিচে Shape নামের একটি বেস ক্লাস এবং তার দুটি ডেরাইভড ক্লাস CircleRectangle তৈরি করা হয়েছে, যেখানে Draw মেথডটি বিভিন্নভাবে ওভাররাইড করা হয়েছে।

using System;

class Shape
{
    public virtual void Draw()
    {
        Console.WriteLine("Drawing a shape.");
    }
}

class Circle : Shape
{
    public override void Draw()
    {
        Console.WriteLine("Drawing a circle.");
    }
}

class Rectangle : Shape
{
    public override void Draw()
    {
        Console.WriteLine("Drawing a rectangle.");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Shape myShape;

        myShape = new Shape();
        myShape.Draw(); // Output: Drawing a shape.

        myShape = new Circle();
        myShape.Draw(); // Output: Drawing a circle.

        myShape = new Rectangle();
        myShape.Draw(); // Output: Drawing a rectangle.
    }
}

আউটপুট

Drawing a shape.
Drawing a circle.
Drawing a rectangle.

এখানে Shape ক্লাসে Draw মেথডটি virtual হিসেবে ঘোষণা করা হয়েছে এবং CircleRectangle ক্লাসে এটি override করা হয়েছে। ফলে পলিমরফিজমের মাধ্যমে বিভিন্ন অবজেক্টে Draw মেথড ভিন্ন ভিন্ন আউটপুট প্রদর্শন করেছে।

সারসংক্ষেপ

  • মেথড ওভাররাইডিং C# এ বেস এবং ডেরাইভড ক্লাসে একই মেথড ভিন্ন ভিন্নভাবে ইমপ্লিমেন্ট করতে সহায়ক।
  • virtual কীওয়ার্ড ব্যবহার করে বেস ক্লাসে মেথডকে ওভাররাইডযোগ্য হিসেবে চিহ্নিত করা হয়।
  • override কীওয়ার্ড ব্যবহার করে ডেরাইভড ক্লাসে বেস ক্লাসের মেথডকে নতুনভাবে ইমপ্লিমেন্ট করা হয়।
  • মেথড ওভাররাইডিংয়ের মাধ্যমে পলিমরফিজমের সুবিধা পাওয়া যায় এবং প্রোগ্রামিংকে আরো মডুলার এবং সহজে রক্ষণাবেক্ষণযোগ্য করা যায়।
Content added By
Promotion